package com.qdlc.p2p.dal.dao;

import java.util.List;

import com.qdlc.p2p.dal.common.dao.BaseDao;
import com.qdlc.p2p.dal.common.model.jpa.PageDataList;
import com.qdlc.p2p.dal.dto.Account;
import com.qdlc.p2p.dal.dto.AccountLog;
import com.qdlc.p2p.dal.model.AccountLogModel;

/**
 * 资金记录Dao
 *
 * @author xx
 * @version 2.0
 * @since 2014年4月10日
 */
public interface AccountLogDao {

	/**
	 * 插入记录
	 * @param accountLog
	 */
	void save(AccountLog accountLog);
	
    /**
     * 资金记录列表
     *
     * @param model
     * @param pageNumber
     * @param pageSize
     * @return
     */
    PageDataList<AccountLogModel> accountLogList(AccountLogModel model, int pageNumber, int pageSize);

    /**
     * 今日净收益
     *
     * @param userId
     * @return
     */
    double todayEarnAmount(long userId);

    /**
     * 累计净收益
     *
     * @param userId
     * @return
     */
    double earnAmount(long userId);

    /**
     * 累计净收益
     *
     * @return
     */
    double earnAmount();

    /**
     * 根据时间、类型获取资金记录金额
     *
     * @param month
     * @param type
     * @return
     */
    double amount(String type, String month);


    /**
     * 查询资金记录
     * @param count 件数
     */
    List<AccountLogModel> findAccountLogByUserId(long userId, int count);

	/**
	 * 增加资金变更日志
	 *
	 * @author Kaiju Zhao
	 * @param account
	 * @param toUserId
	 * @param amount
	 */
	void addAccountLog(Account account, long toUserId, double amount);

	/**
	 * 资金记录列表
	 *
	 * @param model
	 * @param pageNumber
	 * @param pageSize
	 * @return
	 */
	PageDataList<AccountLogModel> list(AccountLogModel model, int pageNumber, int pageSize);

}
